home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 2000 #4 / Amiga Plus CD - 2000 - No. 4.iso / Tools / Grafik / Misc / ImageEnginer / ARexx / Batch / External_ieb / External_ARexx.ieb next >
Encoding:
Text File  |  1997-02-02  |  5.2 KB  |  182 lines

  1. /*
  2. ** $VER: External_ARexx.ieb 1.11, IE Arexx script
  3. ** Image Engineer Batch Processing script
  4. ** Copyright © by Patrik M Nydensten
  5. ** 25/1 1997 Stockholm/Sweden
  6. **
  7. ** Execute an external arexx script, once for every PRIMARY image.
  8. */
  9.  
  10. options results
  11. signal on error
  12.  
  13. parse arg input command
  14. input = upper(strip(input))
  15. address 'IMAGEENGINEER'
  16.  
  17. select  /* Required batch script commands */
  18.   when input = 'INFO' then    return get_info()
  19.   when input = 'CONFIG' then  return get_config(command)
  20.   when input = 'PROCESS' then return process_image(command)
  21.   otherwise do
  22.     'REQUEST' '"Failure in call to batch script!"' '" Quit "'
  23.     return '<ERROR>'
  24.   end
  25. end
  26.  
  27. exit 0
  28.  
  29. /* Required "Get_info" procedure  ------------------------------------ */
  30. /* S = SECONDARY, A = ALPHA, 1 = Single file, 2 = Multiple files       */
  31.  
  32. get_info:
  33.   back = 'OK F'
  34. return back
  35.  
  36. /* Required "Get_config" procedure  ---------------------------------- */
  37.  
  38. get_config:
  39.   parse arg '"'command'"'
  40.  
  41.   'IE_TO_FRONT'
  42.  
  43.   NL = d2c(10)
  44.  
  45.   if command = '' then do
  46.     'FORM "External Arexx" " OK | Cancel"',
  47.     ' FILE,"Arexx script","IE:ARexx/Fresco.rexx"',
  48.     ' CYCLE,"Script type:","This is an IE arexx script.|This is an external script.",0',
  49.     ' TEXT,"This is the argument line that is passed to non-IE arexx scripts.'NL||,
  50.     'Keywords may be used to insert special arguments:'NL||,
  51.     '%S = source image path.'NL||,
  52.     '%D = destination image path.'NL||,
  53.     '%F = current image number.'NL||,
  54.     '%N = total number of images."',
  55.     ' STRING,"Argument line","%S %D",200'
  56.  
  57.     parse var result ok '"'Script'"' Port '"'argline'"' .
  58.     if ok = 0 then return '<ERROR>'
  59.  
  60.     Script = translate(Script,'¤',' ')
  61.     Script = translate(Script,'¥','"')
  62.     argline = translate(argline,'¤',' ')
  63.     argline = translate(argline,'¥','"')
  64.   end
  65.   else do
  66.     'REQUEST' '"You can only select an external 'd2c(10)||'arexx script for the first image."' '" OK "'
  67.     Script = 'none'
  68.     argline = 'none'
  69.     Port = 'none'
  70.   end
  71.  
  72.   back = '#'Script '#'argline '#'strip(Port)
  73. return back
  74.  
  75. /* Required "Process_image" procedure  ------------------------------- */
  76.  
  77. process_image:
  78.   parse arg '"'src_image'"' '"'dst_image'"' '"'options'"' '"'frame':'num_frames'"'
  79.   parse var options '#'Script '#'argline '#'Port .
  80.  
  81.   Script = translate(Script,' ','¤')
  82.   Script = strip(translate(Script,'"','¥'))
  83.  
  84.   if ~exists(Script) then do
  85.     'IE_TO_FRONT'
  86.     'REQUEST' '"Failed to load arexx script:' d2c(10)||Script'"' '" OK "'
  87.     return '<ERROR>'
  88.   end
  89.  
  90.   if Port = 0 then do
  91.     'OPEN' '"'src_image'"' '24'
  92.     if (RC ~= 0) then do
  93.       'IE_TO_FRONT'
  94.       'REQUEST' '"Failed to load image:' d2c(10)||src_image'"' '" OK "'
  95.       return '<ERROR>'
  96.     end
  97.     else LoadImage = result
  98.  
  99.     'PROJECT_LIST'
  100.     pre_list = result
  101.  
  102.     address 'IMAGEENGINEER'
  103.     interpret 'call' '"'Script'"' '"'LoadImage'"'
  104.     if (RC>5) then return '<ERROR>'
  105.  
  106.     'PROJECT_LIST'
  107.     new_list = result
  108.  
  109.     do forever
  110.       parse var pre_list proj pre_list
  111.       xnew_list = new_list ; new_list = ''
  112.       do forever
  113.         parse var xnew_list tproj xnew_list
  114.         if strip(tproj)=strip(proj) then leave
  115.         else new_list = new_list tproj
  116.         if strip(xnew_list) = '' then leave
  117.       end
  118.       if strip(pre_list) = '' then leave
  119.     end
  120.     OutputImage = strip(new_list)
  121.  
  122.     if LoadImage ~= OutputImage then do
  123.       if getclip('cfg_save_frmt')='' then setclip('cfg_save_frmt','ILBM CmpByteRun1')
  124.       'SAVE_DATA' OutputImage '"'dst_image'"' '"'getclip('cfg_save_frmt')'"'
  125.       if (RC ~= 0) then do
  126.         'IE_TO_FRONT'
  127.         'REQUEST' '"Failed to save image:' d2c(10)||dst_image'"' '" OK "'
  128.         return '<ERROR>'
  129.       end
  130.       'CLOSE' OutputImage
  131.     end
  132.  
  133.     'CLOSE' LoadImage
  134.   end
  135.   else do
  136.     argline = translate(strip(argline),' ','¤')
  137.     argline = strip(translate(argline,'"','¥'))
  138.     argline = replace_string(argline,'%S',src_image)
  139.     argline = replace_string(argline,'%s',src_image)
  140.     argline = replace_string(argline,'%D',dst_image)
  141.     argline = replace_string(argline,'%d',dst_image)
  142.     argline = replace_string(argline,'%F',frame)
  143.     argline = replace_string(argline,'%f',frame)
  144.     argline = replace_string(argline,'%N',num_frames)
  145.     argline = replace_string(argline,'%n',num_frames)
  146.     address 'COMMAND' 'Rx' Script argline
  147.     if (RC>5) then return '<ERROR>'
  148.   end
  149.  
  150.   back = 'OK'
  151. return back
  152.  
  153. /* Internal procedures  ---------------------------------------------- */
  154.  
  155. replace_string:
  156.   parse arg rep_str,rep_old,rep_new
  157.   do while (pos(rep_old,rep_str)~=0)
  158.     rep_ofs = pos(rep_old,rep_str)
  159.     rep_str = delstr(rep_str,rep_ofs,length(rep_old))
  160.     rep_str = insert(rep_new,rep_str,rep_ofs-1)
  161.   end  /* while */
  162. return rep_str
  163.  
  164. /*******************************************************************/
  165. /* This is where control goes when an error code is returned by IE */
  166. /* It puts up a message saying what happened and on which line     */
  167. /*******************************************************************/
  168.  
  169. error:
  170. if RC=5 then do
  171.     IE_TO_FRONT
  172.     LAST_ERROR
  173.     'REQUEST "'||RESULT||'"'
  174. end
  175. else do
  176.     IE_TO_FRONT
  177.     LAST_ERROR
  178.     'REQUEST "Error detected!!!'||D2C(10)||'Image Engineer error message is as follows'||D2C(10)||result||D2C(10)||'Script failed on line '||SIGL||'"' 'Doh!'
  179. end
  180.  
  181. return '<ERROR>'
  182.